package design.create.原型;

import java.util.ArrayList;

/**
 * Cloneable 通知虚拟机 可以安全的调用 clone ,否则抛异常 CloneNotSupportedException,直接操作内存 速度快
 * 1、 实现接口,可重写 clone 方法修改为public
 * 2、 是浅拷贝 只能复制 8中基础类型,包种类,String
 * <p>
 * 参照 ArraysList 源码
 */
public class OB implements Cloneable {
    String string;
    int i;
    ArrayList<String> list = new ArrayList<>();

    OB() {
        this.string = "asdfasdf";
        this.i = 9999;
        this.list.add("1");
    }

    public OB clone() throws CloneNotSupportedException {
        OB o = (OB) super.clone();
        o.list = (ArrayList<String>) o.list.clone();//其余需要手动拷贝
        return o;
    }

    public static void main(String[] args) throws CloneNotSupportedException {
        OB o = new OB();
        OB o1 = o.clone();
        OB o2 = o.clone();
        OB o3 = o.clone();
    }


}
